#!/usr/bin/python
#
# Copyright 2011 Google Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""Example script for how to download a CSV file and upload it to Google docs.  

Download a Top Search Queries CSV file and then upload the file to Google docs
as a spreadheet.  The email, password, and website values used here must be
replaced with real values.  See wiki document on its use.
"""

# Import the downloader
from downloader import Downloader
# Import gdata objects for uploading files to Google Docs
import gdata.docs
import gdata.docs.service

# Email address and password used to sign-in to Webmaster Tools and Google Docs
email = 'user@example.com'
password = '********'
# Specify the website and the type of data to download
website = 'http://www.example.com/'
selected_downloads = ['TOP_QUERIES']

# Instantiate the downloader object
downloader = Downloader()
# Authenticate with your Webmaster Tools sign-in info
downloader.LogIn(email, password)
# Initiate the download
downloader.DoDownload(website, selected_downloads)

# Create a client class which will make HTTP requests with Google Docs server
gd_client = gdata.docs.service.DocsService()
# Authenticate using your Google Docs sign-in info
gd_client.ClientLogin(email, password)

# Get the csv file name that was generated by the downloader script and use it to upload the file to Google Docs
for line in downloader.GetDownloadedFiles():
  ms = gdata.MediaSource(file_path=line.strip(), content_type=gdata.docs.service.SUPPORTED_FILETYPES['CSV'])
  entry = gd_client.Upload(ms, line.strip())
  # Display the URL of the uploaded file to the command line's standard-output
  print 'Spreadsheet now accessible online at:', entry.GetAlternateLink().href